<!DOCTYPE html>
<html lang="zh-CN">
<head>
  <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=2">
<meta name="theme-color" content="#222">
<meta name="generator" content="Hexo 6.1.0">
  <link rel="apple-touch-icon" sizes="180x180" href="/images/apple-touch-icon-next.png">
  <link rel="icon" type="image/png" sizes="32x32" href="/images/favicon-32x32-next.png">
  <link rel="icon" type="image/png" sizes="16x16" href="/images/favicon-16x16-next.png">
  <link rel="mask-icon" href="/images/logo.svg" color="#222">

<link rel="stylesheet" href="/css/main.css">


<link rel="stylesheet" href="/lib/font-awesome/css/all.min.css">

<script id="hexo-configurations">
    var NexT = window.NexT || {};
    var CONFIG = {"hostname":"chenmenghui.gitee.io","root":"/","scheme":"Gemini","version":"7.8.0","exturl":false,"sidebar":{"position":"left","display":"post","padding":18,"offset":12,"onmobile":false},"copycode":{"enable":false,"show_result":false,"style":null},"back2top":{"enable":true,"sidebar":true,"scrollpercent":true},"bookmark":{"enable":false,"color":"#222","save":"auto"},"fancybox":false,"mediumzoom":false,"lazyload":false,"pangu":false,"comments":{"style":"tabs","active":null,"storage":true,"lazyload":false,"nav":null},"algolia":{"hits":{"per_page":10},"labels":{"input_placeholder":"Search for Posts","hits_empty":"We didn't find any results for the search: ${query}","hits_stats":"${hits} results found in ${time} ms"}},"localsearch":{"enable":true,"trigger":"auto","top_n_per_article":1,"unescape":false,"preload":false},"motion":{"enable":false,"async":false,"transition":{"post_block":"fadeIn","post_header":"slideDownIn","post_body":"slideDownIn","coll_header":"slideLeftIn","sidebar":"slideUpIn"}},"path":"search.xml"};
  </script>

  <meta name="description" content="摘自知乎 数组函数： 1.排序类：【1.无返回值，传值引用，就直接对原数组进行了修改】 按V：sort,rsort,asort,arsort, 按K：ksort,krsort sort()	按升序对给定数组的值排序，不保留键名 rsort()	对数组逆向排序，不保留键名 asort() 对数组排序，保持索引关系 arsort() 对数组逆向排序，保持索引关系 ksort() 按键名对数组排序 kr">
<meta property="og:type" content="article">
<meta property="og:title" content="PHP 常用函数">
<meta property="og:url" content="https://chenmenghui.gitee.io/posts/25320.html">
<meta property="og:site_name" content="陈孟辉的学习笔记">
<meta property="og:description" content="摘自知乎 数组函数： 1.排序类：【1.无返回值，传值引用，就直接对原数组进行了修改】 按V：sort,rsort,asort,arsort, 按K：ksort,krsort sort()	按升序对给定数组的值排序，不保留键名 rsort()	对数组逆向排序，不保留键名 asort() 对数组排序，保持索引关系 arsort() 对数组逆向排序，保持索引关系 ksort() 按键名对数组排序 kr">
<meta property="og:locale" content="zh_CN">
<meta property="article:published_time" content="2020-05-19T16:00:00.000Z">
<meta property="article:modified_time" content="2022-04-15T05:54:44.984Z">
<meta property="article:author" content="陈孟辉">
<meta property="article:tag" content="PHP基础知识">
<meta name="twitter:card" content="summary">

<link rel="canonical" href="https://chenmenghui.gitee.io/posts/25320.html">


<script id="page-configurations">
  // https://hexo.io/docs/variables.html
  CONFIG.page = {
    sidebar: "",
    isHome : false,
    isPost : true,
    lang   : 'zh-CN'
  };
</script>

  <title>PHP 常用函数 | 陈孟辉的学习笔记</title>
  






  <noscript>
  <style>
  .use-motion .brand,
  .use-motion .menu-item,
  .sidebar-inner,
  .use-motion .post-block,
  .use-motion .pagination,
  .use-motion .comments,
  .use-motion .post-header,
  .use-motion .post-body,
  .use-motion .collection-header { opacity: initial; }

  .use-motion .site-title,
  .use-motion .site-subtitle {
    opacity: initial;
    top: initial;
  }

  .use-motion .logo-line-before i { left: initial; }
  .use-motion .logo-line-after i { right: initial; }
  </style>
</noscript>

<link rel="alternate" href="/rss2.xml" title="陈孟辉的学习笔记" type="application/rss+xml">
</head>

<body itemscope itemtype="http://schema.org/WebPage">
  <div class="container">
    <div class="headband"></div>

    <header class="header" itemscope itemtype="http://schema.org/WPHeader">
      <div class="header-inner"><div class="site-brand-container">
  <div class="site-nav-toggle">
    <div class="toggle" aria-label="切换导航栏">
      <span class="toggle-line toggle-line-first"></span>
      <span class="toggle-line toggle-line-middle"></span>
      <span class="toggle-line toggle-line-last"></span>
    </div>
  </div>

  <div class="site-meta">

    <a href="/" class="brand" rel="start">
      <span class="logo-line-before"><i></i></span>
      <h1 class="site-title">陈孟辉的学习笔记</h1>
      <span class="logo-line-after"><i></i></span>
    </a>
      <p class="site-subtitle" itemprop="description">加油吧骚年</p>
  </div>

  <div class="site-nav-right">
    <div class="toggle popup-trigger">
        <i class="fa fa-search fa-fw fa-lg"></i>
    </div>
  </div>
</div>




<nav class="site-nav">
  <ul id="menu" class="main-menu menu">
        <li class="menu-item menu-item-home">

    <a href="/" rel="section"><i class="fa fa-home fa-fw"></i>首页</a>

  </li>
        <li class="menu-item menu-item-categories">

    <a href="/categories/" rel="section"><i class="fa fa-th fa-fw"></i>分类</a>

  </li>
        <li class="menu-item menu-item-tags">

    <a href="/tags/" rel="section"><i class="fa fa-tags fa-fw"></i>标签</a>

  </li>
        <li class="menu-item menu-item-archives">

    <a href="/archives/" rel="section"><i class="fa fa-archive fa-fw"></i>归档</a>

  </li>
        <li class="menu-item menu-item-about">

    <a href="/about/" rel="section"><i class="fa fa-user fa-fw"></i>关于</a>

  </li>
        <li class="menu-item menu-item-rss">

    <a href="/rss2.xml" rel="section"><i class="fa fa-rss fa-fw"></i>RSS</a>

  </li>
      <li class="menu-item menu-item-search">
        <a role="button" class="popup-trigger"><i class="fa fa-search fa-fw"></i>搜索
        </a>
      </li>
  </ul>
</nav>



  <div class="search-pop-overlay">
    <div class="popup search-popup">
        <div class="search-header">
  <span class="search-icon">
    <i class="fa fa-search"></i>
  </span>
  <div class="search-input-container">
    <input autocomplete="off" autocapitalize="off"
           placeholder="搜索..." spellcheck="false"
           type="search" class="search-input">
  </div>
  <span class="popup-btn-close">
    <i class="fa fa-times-circle"></i>
  </span>
</div>
<div id="search-result">
  <div id="no-result">
    <i class="fa fa-spinner fa-pulse fa-5x fa-fw"></i>
  </div>
</div>

    </div>
  </div>

</div>
    </header>

    


    <main class="main">
      <div class="main-inner">
        <div class="content-wrap">
          

          <div class="content post posts-expand">
            

    
  
  
  <article itemscope itemtype="http://schema.org/Article" class="post-block" lang="zh-CN">
    <link itemprop="mainEntityOfPage" href="https://chenmenghui.gitee.io/posts/25320.html">

    <span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
      <meta itemprop="image" content="/images/avatar.gif">
      <meta itemprop="name" content="陈孟辉">
      <meta itemprop="description" content="日积月藏，不做咸鱼。这里是陈孟辉的个人学习笔记，现就职于北京瑞友科技，负责维护企业ERP系统。">
    </span>

    <span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
      <meta itemprop="name" content="陈孟辉的学习笔记">
    </span>
      <header class="post-header">
        <h1 class="post-title" itemprop="name headline">
          PHP 常用函数
        </h1>

        <div class="post-meta">
            <span class="post-meta-item">
              <span class="post-meta-item-icon">
                <i class="far fa-calendar"></i>
              </span>
              <span class="post-meta-item-text">发表于</span>

              <time title="创建时间：2020-05-20 00:00:00" itemprop="dateCreated datePublished" datetime="2020-05-20T00:00:00+08:00">2020-05-20</time>
            </span>
              <span class="post-meta-item">
                <span class="post-meta-item-icon">
                  <i class="far fa-calendar-check"></i>
                </span>
                <span class="post-meta-item-text">更新于</span>
                <time title="修改时间：2022-04-15 13:54:44" itemprop="dateModified" datetime="2022-04-15T13:54:44+08:00">2022-04-15</time>
              </span>
            <span class="post-meta-item">
              <span class="post-meta-item-icon">
                <i class="far fa-folder"></i>
              </span>
              <span class="post-meta-item-text">分类于</span>
                <span itemprop="about" itemscope itemtype="http://schema.org/Thing">
                  <a href="/categories/PHP/" itemprop="url" rel="index"><span itemprop="name">PHP</span></a>
                </span>
                  ，
                <span itemprop="about" itemscope itemtype="http://schema.org/Thing">
                  <a href="/categories/PHP/PHP%E5%9F%BA%E7%A1%80%E7%9F%A5%E8%AF%86/" itemprop="url" rel="index"><span itemprop="name">PHP基础知识</span></a>
                </span>
            </span>

          
  
  <span class="post-meta-item">
    
      <span class="post-meta-item-icon">
        <i class="far fa-comment"></i>
      </span>
      <span class="post-meta-item-text">Valine：</span>
    
    <a title="valine" href="/posts/25320.html#valine-comments" itemprop="discussionUrl">
      <span class="post-comments-count valine-comment-count" data-xid="/posts/25320.html" itemprop="commentCount"></span>
    </a>
  </span>
  
  <br>
            <span class="post-meta-item" title="本文字数">
              <span class="post-meta-item-icon">
                <i class="far fa-file-word"></i>
              </span>
                <span class="post-meta-item-text">本文字数：</span>
              <span>11k</span>
            </span>
            <span class="post-meta-item" title="阅读时长">
              <span class="post-meta-item-icon">
                <i class="far fa-clock"></i>
              </span>
                <span class="post-meta-item-text">阅读时长 &asymp;</span>
              <span>10 分钟</span>
            </span>

        </div>
      </header>

    
    
    
    <div class="post-body" itemprop="articleBody">

      
        <p><em>摘自知乎</em></p>
<p>数组函数：</p>
<p>1.排序类：【1.无返回值，传值引用，就直接对原数组进行了修改】</p>
<p>按V：sort,rsort,asort,arsort,</p>
<p>按K：ksort,krsort</p>
<p>sort()	按升序对给定数组的值排序，不保留键名</p>
<p>rsort()	对数组逆向排序，不保留键名</p>
<p>asort() 对数组排序，保持索引关系</p>
<p>arsort() 对数组逆向排序，保持索引关系</p>
<p>ksort() 按键名对数组排序</p>
<p>krsort() 将数组按照键逆向排序</p>
<p>natsort() 用自然顺序算法对数组中的元素排序</p>
<p>natcasesort() 自然排序，不区分大小写</p>
<p>2.键值操作类：【都有返回值，没有在原来参数上修改】</p>
<p>array_values($arr); &#x2F;&#x2F;获取$arr中的值重排,去掉下标,返回值-&gt;新索引数组</p>
<p>array_keys($arr[,”str”,true])	&#x2F;&#x2F;获取$arr中所有字符是”str”的下标，形成</p>
<p>索引数组,true表示区分大小写【返回新索引数组】</p>
<p>array_search(“is”,$arr[,true]) &#x2F;&#x2F;返回值”is”在$arr中的key，找不到返回</p>
<p>fales,true表示严格按照类型(8,”8”)【返回第一个匹配值】</p>
<p>in_array(“str”,$arr);	&#x2F;&#x2F;判断”str”在$arr中是否存在，【返回BOOL】</p>
<p>is_array($arr);	&#x2F;&#x2F;判断是否是数组【返回BOOL】</p>
<p>array_key_exists($key,$arr); &#x2F;&#x2F;查询$arr中是否有$key，【返回BOOL】,</p>
<p>此方法比in_array效率更高</p>
<p>array_flip($arr); &#x2F;&#x2F; 交换键值，如有重复，后来居上，【返回新数组】</p>
<p>array_reverse($arr,[true|false]); &#x2F;&#x2F;数组顺序反转，param2是否保留原</p>
<p>来键值【返回新关联&#x2F;索引数组】</p>
<p>array_column(array(),’name’[,name_two]) — 返回数组中指定的name列</p>
<p>[可选参数，如果有返回name&#x3D;&gt;name_two的形式]【返回一维数组】</p>
<p>3.元素个数和唯一性</p>
<p>array_unique($arr);	&#x2F;&#x2F;去掉$arr中的重复值，重复的保留第一个值，【返回</p>
<p>数组，键值保留】</p>
<p>array_count_values($arr)	&#x2F;&#x2F;统计数组值出现的次数，【返回数组，</p>
<p>KEY为原来数组的值，VALUE为统计的次数】</p>
<p>count($arr[,1])&#x2F;sizeof();	&#x2F;&#x2F;统计$arr的元素个数，参数”1”表示统计多维数</p>
<p>组开启，默认0为关闭【返回统计个数】</p>
<p>4.回调函数</p>
<p>array_filter($arr,”function”);	&#x2F;&#x2F;把$arr放到函数function中处理，【返回判</p>
<p>断为TRUE的数据组成新数组，键值保留】</p>
<p>array_walk($arr,”function”[,”data”]);	&#x2F;&#x2F;把$arr放function(&amp;$v,$k,$data)</p>
<p>中处理【返回值为bool】</p>
<p>array_map(“function”,$arr,$arr2,$arr3,….);	&#x2F;&#x2F;把所有数组返回到回调函</p>
<p>数统一处理，【返回数组】</p>
<p>array_reduce($arr,myfunction[,initial]); &#x2F;&#x2F;把一维数组$arr中的</p>
<p>值依次传到自定义函数myfunction($v1,$v2)的v2上，v1为累加值类似于( .&#x3D;</p>
<p>),[如果有initial，先把其当v1传进去]【返回字符串】</p>
<p>5.拆分，合并，分解，接合数组</p>
<p>array_slice($arr,1[,2]);	&#x2F;&#x2F;在$arr中，从第二个开始取[，返回俩个值]【返</p>
<p>回新数组(对原数组无影响)，键值保留】</p>
<p>array_splice($arr,1[,2,”aaa”,”bb”])	; &#x2F;&#x2F;删除或替换，从$arr第二个开始</p>
<p>取，删除或替换2个值【返回值为新数组，拆掉原数组】</p>
<p>array_combine($arr1,$arr2);	&#x2F;&#x2F;数组$arr1为KEY,$arr2为VALUES结合形</p>
<p>成新索引数组【返回索引数组】</p>
<p>array_merge($arr1,$arr2,$arr3…);	&#x2F;&#x2F;数组进行合并，保留键值，有重复，</p>
<p>后来者居上 【返回新数组】 array_merge 发现有 key 值相同的， 取后</p>
<p>者; $arr1+$arr2 发现有key值相同的，取前者，第二个重复的值丢弃</p>
<p>array_intersect($arr1,$arr2);	&#x2F;&#x2F;返回两个数组的交集，键值不变</p>
<p>array_diff($arr1,$arr2);	&#x2F;&#x2F;返回两数组的差集，返回的值为第一个数组的</p>
<p>值，键值不变</p>
<p>array_chunk($arr,2);	&#x2F;&#x2F;分割数组,把$arr按照【2个为一组】均等分割</p>
<p>【返回一个二维数组】</p>
<p>6.数组的数据结构【无返回值，传值引用，就直接对原数组进</p>
<p>行了修改】</p>
<p>array_shift($arr) &#x2F;&#x2F;从开头，删除数组第一个元素</p>
<p>array_unshift($arr,”one”,”two”) &#x2F;&#x2F;从开头，添加元素</p>
<p>array_pop($arr) &#x2F;&#x2F;从结尾，删除数组最后一个元素</p>
<p>array_push($arr,”aaa”);	&#x2F;&#x2F;从结尾，添加元素</p>
<p>current($arr) &#x2F;&#x2F;返回数组中的当前单元 比如是关联数组是不知道下标，</p>
<p>可以输出当前数组的办法解决(返回的是数组中第一个健值)</p>
<p>key($arr)	&#x2F;&#x2F;返回当前指针指向元素的键值</p>
<p>next($arr)	&#x2F;&#x2F;当前指针下移</p>
<p>pre($arr)	&#x2F;&#x2F;当前指针上移</p>
<p>end($arr)	&#x2F;&#x2F;指针指到最后</p>
<p>reset($arr)	&#x2F;&#x2F;指针回归到开头</p>
<p>unset($arr)&#x2F;&#x2F;销毁此数组</p>
<p>7.其他</p>
<p>array_rand($arr,2);	&#x2F;&#x2F;随机返回两个$arr数组当中的key【返回值为值或者</p>
<p>数组】</p>
<p>shuffle($arr)	&#x2F;&#x2F;随机的重组$arr，顺序变乱【返回新数组，保留键值】</p>
<p>array_sum($arr);	&#x2F;&#x2F;返回$arr的value的和【返回一个值】</p>
<p>range(0,10,2,)	&#x2F;&#x2F;快速创建0，10的数组，间隔为2，所以有5个值【返回新</p>
<p>索引数组】</p>
<p>http_build_query($arr)	&#x2F;&#x2F;把关联数组转换成一个经过urlencode加密的</p>
<p>URL eg:array[“a”&#x3D;&gt;2];&#x3D;&gt;URL:a&#x3D;2&amp;</p>
<p>字符串函数</p>
<p>1.返回bool</p>
<p>isset($a)	&#x2F;&#x2F;当$a&#x3D;NULL 或不存在，返回false，反之为true</p>
<p>empty($a)	&#x2F;&#x2F;当$a&#x3D;NULL&#x2F;‘’&#x2F;array()&#x2F;0&#x2F;‘0’&#x2F;不存在 时 返回true,反之为false</p>
<ol start="2">
<li>返回值为自字符</li>
</ol>
<p>substr(字符串,开始地方,[返回字符串的长度]);	&#x2F;&#x2F;截取字符串的一部分,第一</p>
<p>个字符位置为0</p>
<p>substr_replace($str,”aaa”,start[,length]);	&#x2F;&#x2F;在$str上操作，从第start个</p>
<p>开始,把【后边】的字符[全&#x2F;或length个]替换</p>
<p>sub_count($str,”is”[,5,10]); &#x2F;&#x2F;[ 从第五个字符开始，搜索长度为10，]搜</p>
<p>索is在$str中出现的次数，【返回次数】</p>
<p>strstr($email,”@”[,true]) &#x2F;&#x2F;从头开始搜索,无true返回@后边字符，有true</p>
<p>返回@前边的字符[strrchr对比]</p>
<p>strrchr($email,”@”) &#x2F;&#x2F;从结尾开始搜索，返回@后的所有字符</p>
<p>str_replace &#x2F;&#x2F;(被替换词,替换词，被搜索字符串，[统计替换次数</p>
<p>$num]) 前两个参数也可为数组，两个数组元素个数相同</p>
<p>str_repeat($str,num);	&#x2F;&#x2F;重复$str字符串 num次，</p>
<p>3.返回值为数字类的</p>
<p>strpos($str,”@”); &#x2F;&#x2F;返回@【第一次出现的位置】</p>
<p>strrpos($str,”@”);	&#x2F;&#x2F;返回@【最后一次出现的位置】</p>
<p>str_word_count($str[,0&#x2F;1&#x2F;2]);	&#x2F;&#x2F;返回$str中单词的数量[0指返回次数,默认</p>
<p>值&#x2F;1指以数组形式返回单词值&#x2F;2指返回关联数组，k为单词首字母下标,v单词</p>
<p>值]</p>
<p>strcmp($str1,$str2); &#x2F;&#x2F;按ASCII码比较 str1&gt;str2 则返回1 相等返回0 &lt;</p>
<p>返回-1 strcasecmp不区分大小写的比较</p>
<p>strnatcmp($str1,$str2); &#x2F;&#x2F;按自然数的排序比较，上边的比较10&lt;2；本函</p>
<p>数比较10&gt;2,按自然数大小来的 strcasecmp($str1,$str2);strnatcasecmp&#x2F;&#x2F;</p>
<p>以上4个函数，$str1，$str2比较，【返回值：相等0，小于-1，大于1】</p>
<p>number_format(10000[,2]); &#x2F;&#x2F;&#x3D;&#x3D;》10,000.00 把第一个参数格式</p>
<p>化,保留2位小数</p>
<p>strlen($string);成功则返回字符串 $string 的长度</p>
<p>mb_strlen($string,’utf8’);&#x2F;&#x2F;获取字符串$string长度，多字节的字符被计为</p>
<p>1。</p>
<p>4.文本处理类</p>
<p>strtoupper($str) &#x2F;&#x2F;字母全转为大写【返回全大写字符串】</p>
<p>strtolower() &#x2F;&#x2F;字母全转为小写【返回全小写字符串】</p>
<p>strtotime(‘2015-10-10 10:10:10’); &#x2F;&#x2F;指定时间转换为时间戳【返回时间</p>
<p>戳】</p>
<p>str_pad($str,length,[—，STR_PAD_BOTH]); &#x2F;&#x2F;在$str的两边填补“—“，</p>
<p>注意，length若小于$str长度，不填补</p>
<p>trim($str[,”a”,STR_PAD_BOTH]) &#x2F;&#x2F;去除两边&#x2F;左&#x2F;右的空白或”a”,默认是空</p>
<p>白，或自定义字符</p>
<p>floatval(“123.45aa”) &#x2F;&#x2F;&#x3D;》获取变量的浮点值【123.45】</p>
<p>ucfirst() &#x2F;&#x2F;整个$str首字母大写</p>
<p>ucword() &#x2F;&#x2F;$str每个单词首字母大写</p>
<ol start="5">
<li>HTML类处理</li>
</ol>
<p>htmlspecialchars($str) &#x2F;&#x2F;函数把【预定义字符】转换为【 HTML 实</p>
<p>体】，&amp;转换成&amp;amp</p>
<p>htmlspecialchars_decode($str); &#x2F;&#x2F;把【HTML实体】转换成【预定义字</p>
<p>符】，&amp;amp转换成&amp;</p>
<p>htmlentities($str); &#x2F;&#x2F;函数把【预定义字符】转换为【 HTML 实体】，&amp;</p>
<p>转换成&amp;amp，有乱码问题，注意第二第三个参数，若编码不正确，会在实</p>
<p>体化时把信息丢失</p>
<p>html_entity_decode($str) &#x2F;&#x2F;把【HTML实体】转换成【预定义字符】，</p>
<p>&amp;amp转换成&amp;, &amp;gt 转成 &lt;</p>
<p>addslashes($html)； &#x2F;&#x2F;添加转义字符“&#x2F;”</p>
<p>stripslashes($html); &#x2F;&#x2F;删除转义字符“&#x2F;”</p>
<p>strip_tags($html); &#x2F;&#x2F;去除HTML标签</p>
<p>nl2br($str) &#x2F;&#x2F;在$str中的换行&#x2F;n前插入<br>，因为\n在源码可以换行，但是</p>
<p>在浏览器窗口不行，有这个就可以</p>
<p>iconv( from_charset ; to_charset,$str); &#x2F;&#x2F;转化字符格式</p>
<p>$file_name &#x3D; iconv(“gb2312”,”utf-8”,$file_name);</p>
<p>正则函数</p>
<p>[原则，能用字符串函数解决不用正则，速度问题]</p>
<p>1.字符串的匹配查找</p>
<p>preg_match($pattern,$subject,$arr); &#x2F;&#x2F;按正则$pattern处理$subject,第</p>
<p>一次匹配结果返回到数组中【函数的返回值为匹配次数】</p>
<p>preg_match_all($pattern,$subject,$arr) &#x2F;&#x2F;按正则$pattern处理$subject,</p>
<p>全部匹配结果返回到数组中【函数的返回值为匹配次数】</p>
<p>strstr($str,”@”[,true]);</p>
<p>strpos,strrpos,substr($str,position) &#x2F;&#x2F;联合使用</p>
<p>2.字符串的替换</p>
<p>preg_replace($pattenr,$replace,$str); &#x2F;&#x2F;【强大的字符串处理函数】</p>
<p>在$str中,把$parrern匹配的值替换成$replcae【返回值为处理后的字符串】</p>
<p>str_replace($str,”aaa”,”bbb”); &#x2F;&#x2F;把$str中的aaa换成bbb</p>
<p>3.字符串的分割和链接</p>
<p>preg_split($pattern,$str); 通过一个正则表达式分隔字符串【返回值为</p>
<p>数组】</p>
<p>举例:</p>
<p>1.$keywords &#x3D; preg_split(“&#x2F;[\s,]+&#x2F;“, “hypertext language, programming”)</p>
<p>结果Array([0] &#x3D;&gt; hypertext,[1] &#x3D;&gt; language[2] &#x3D;&gt; programming)</p>
<p>2.explode(“,”,$str[,$limit_num]);&#x2F;&#x2F;把$str按照”，”分割成一个数组[可选参</p>
<p>数为返回数组的元素个数]【返回一个分割后的数组】</p>
<p>3.impolde(“+”,$arr);&#x2F;&#x2F;把$arr里的元素按照“+”链接成一个字符串</p>
<ol start="4">
<li>xss安全相关</li>
</ol>
<p>addcslashes</p>
<p>举例：</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><span class="line">// 这是在项目中遇到的，如果json字符串中有「`」，就会把</span><br><span class="line">&lt;?php</span><br><span class="line">$arr = [ [ &#x27;name&#x27; =&gt; &quot;valen&#x27;s&quot;, &#x27;age&#x27;  =&gt; 27, ], [ &#x27;name&#x27; =&gt; &#x27;blue&#x27;, &#x27;age&#x27;  =&gt; 26, ], ];</span><br><span class="line"></span><br><span class="line">$json =  addcslashes(json_encode($arr), &#x27;\&#x27;&#x27;);</span><br><span class="line">?&gt;</span><br><span class="line">&lt;script&gt;</span><br><span class="line">    console.log(JSON.parse(&#x27;&lt;?=$json?&gt;&#x27;));</span><br><span class="line">&lt;/script&gt;</span><br></pre></td></tr></table></figure>

<p>文件处理函数</p>
<p>1.基础函数</p>
<p>file_exists($file) &#x2F;&#x2F;文件是否存在，【true&#x2F;false】</p>
<p>filesize($file) &#x2F;&#x2F;返回文件的大小【大小字节&#x2F;出错false】</p>
<p>is_readale($file) &#x2F;&#x2F;是否可读【返回bool】</p>
<p>is_writeable($file) &#x2F;&#x2F;是否可写【返回bool】</p>
<p>is_executable($file) &#x2F;&#x2F;是否可执行【返回bool】</p>
<p>filectime($file) &#x2F;&#x2F;文件创建时间【时间戳】</p>
<p>filemtime($file) &#x2F;&#x2F;文件修改时间【时间戳】</p>
<p>fileatime($file) &#x2F;&#x2F;文件访问时间【时间戳】</p>
<p>stat($file) &#x2F;&#x2F;返回文件的大部分信息【文件信息数组】</p>
<ol start="2">
<li>目录的基本操作</li>
</ol>
<p>basename($file) &#x2F;&#x2F;返回文件名，index.php</p>
<p>dirname($file) &#x2F;&#x2F;返回文件的路径，c:&#x2F;&#x2F;php&#x2F;</p>
<p>pathinfo($file) &#x2F;&#x2F;返回该文件路径的所有信息 [“dirname”目录</p>
<p>名] [“basename”文件名] [“extension”文件后缀]</p>
<p>目录复制，删除，统计大小使用的总结：</p>
<p>本质：依靠递归思想，对目录的的循环遍历,通过每一个文件的操作，得</p>
<p>出结果</p>
<p>函数：复制：copy($org,$to);mkdir()</p>
<p>删除：unlink($file);mrdir();</p>
<p>统计大小:filesize($file)</p>
<p>3.遍历目录</p>
<p>opendir($file) &#x2F;&#x2F;打开一个目录，参数为目录名或目录路径【返回资源型</p>
<p>的目录句柄$dir_handle,无权限返false】</p>
<p>readdir($dir_handle); &#x2F;&#x2F;读取目录，参数为目录句柄，while,返回当前指</p>
<p>向对象的名字，目录指针后移【返回filename,没有是返false】</p>
<p>closedir($dir_handle) &#x2F;&#x2F;关闭打开的目录</p>
<p>rewinddir($dir_handle) &#x2F;&#x2F;倒回目录句柄，将目录指针重置到目录开始</p>
<ol start="4">
<li>建立和删除目录</li>
</ol>
<p>mkdir(“dir_name”); &#x2F;&#x2F;建立一个空的目录</p>
<p>rmdir(“dir_name”); &#x2F;&#x2F;删除一个空的目录</p>
<p>unlink(“file_name”) &#x2F;&#x2F;删除一个文件，当删除目录是，必须删除该目录下的文件</p>
<p>5.文件的基本操作</p>
<p>fopen($fileName,”模式字符r,w,x”) &#x2F;&#x2F;打开一个文件，【返回值为资源型</p>
<p>$handle】</p>
<p>fclose($handle) &#x2F;&#x2F;关闭打开的文件【返回BOOL】</p>
<p>fwrite($handle,”$data”) &#x2F;&#x2F;把$data写入$handle文件,先清空后写入，</p>
<p>【成功返回$handle，失败返回false】</p>
<p>file_put_contents($filename,$data); &#x2F;&#x2F;它是上边三个合起来的效果</p>
<p>file_get_contents($filename) &#x2F;&#x2F;读取文件里的信息【返回字符串】</p>
<p>flock($handle,$operation) &#x2F;&#x2F;用$operation锁定文件$handle</p>
<p>copy($file1,$file2); &#x2F;&#x2F;赋值$file1，形成$file2【返回BOOL】</p>
<p>unlink($file); &#x2F;&#x2F;删除$file文件【返回BOOL】</p>
<p>rename($file1,$file_new_name); &#x2F;&#x2F;重命名【返回BOOL】</p>
<p>6.文件的上传</p>
<p>is_upload_file($_FILES[‘file’][‘tmp_name’]) &#x2F;&#x2F;检查是否合法</p>
<p>move_upload_file($_FILES[‘file’][‘tmp_name’],$url); &#x2F;&#x2F;上传合法文件</p>
<p>到$url</p>
<p>注意：html:form: method&#x3D;”post” ;enctype&#x3D;”multipart&#x2F;form-data”</p>
<p>文件下载</p>
<p>header(‘contentdisposition:attachment;filename&#x3D;’.basename</p>
<p>($filename));&#x2F;&#x2F;表示附件方式下载</p>
<p>header(‘content-length:’.filesize($filename));</p>
<p>readfile($filename);</p>
<p>SQL函数</p>
<p>mysql_connect(‘localhost’,”root”,”root”); &#x2F;&#x2F;连接数据库</p>
<p>mysql_select_db(‘data’,$conn); &#x2F;&#x2F;选择数据库名</p>
<p>mysql_query(‘set names utf8’); &#x2F;&#x2F;设置编码</p>
<p>mysql_affect_array(); &#x2F;&#x2F;试返回值为关联&#x2F;索引数组</p>
<p>mysql_affect_row(); &#x2F;&#x2F;返回索引数组</p>
<p>mysql_affect_assoc(); &#x2F;&#x2F;返回关联数组</p>
<p>mysql_num_rows(); &#x2F;&#x2F;返回上一次select的查询语句条数</p>
<p>mysql_affected_rows(); &#x2F;&#x2F;返回上一次insert,update,delete的数据条数</p>
<p>mysql_close();&#x2F;&#x2F;关闭数据库</p>
<p>数学函数</p>
<p>ceil() &#x2F;&#x2F;向上取整</p>
<p>floor() &#x2F;&#x2F;向下取整</p>
<p>round(); &#x2F;&#x2F;四舍五入</p>
<p>abs(); &#x2F;&#x2F;取绝对值</p>
<p>rand(10，100) &#x2F;&#x2F;随机取值</p>
<p>mt_rand(10,100) &#x2F;&#x2F;随机取值，算法不同，速度更快</p>
<p>fmod() &#x2F;&#x2F;返回除法浮点形余数</p>
<p>max(int&#x2F;$arr) &#x2F;&#x2F;取最大值</p>
<p>min(int&#x2F;$arr) &#x2F;&#x2F;取最小值</p>
<p>pow(1024,2) &#x2F;&#x2F;返回1021的2次幂</p>
<p>时间函数</p>
<p>date_default_timezone_set()(‘PRC’); &#x2F;&#x2F;设置时区为中国</p>
<p>date.timezone &#x3D;”PRC”; &#x2F;&#x2F;PHP.INI</p>
<p>time(); &#x2F;&#x2F;默认获取当前时间，【返回时间戳格式】</p>
<p>micritime(); &#x2F;&#x2F;获取当前时间【返回毫秒的时间戳】</p>
<p>mktime(H,i,s,m,d,Y) &#x2F;&#x2F;指定时间转为时间戳，参数为空的时候作用与</p>
<p>time()相同【返回时间戳格式】</p>
<p>strtotime(‘2015-10-10 10:10:10’); &#x2F;&#x2F;指定时间转换为时间戳【返回时间</p>
<p>戳】</p>
<p>date(“Y-m-d H:i:s”,time()) ; &#x2F;&#x2F;转换时间戳为日期格式【返回目标格式的</p>
<p>字符串】</p>
<p>getdate() &#x2F;&#x2F;获取当前时间，【返回一个数组，参数年，月，日等都有】</p>
<p>URL处理函数</p>
<p>urlencode($url) &#x2F;&#x2F;对该URL进行编码；原因：防止乱码，解决空格的呢个字符不能传递问题，form也是此编码格式传递</p>
<p>urldecode($url) &#x2F;&#x2F;对该URL进行解码</p>
<p>parse_url($url) &#x2F;&#x2F;返回该URL的所有信息，[scheme协议][host域名] [path路径][query参数] 【返回含信息的数组】</p>
<p>pathinfo($url) &#x2F;&#x2F;[“dirname”目录名] [“basename”文件名] [“extension”文件后缀]【返回含信息的数组，下标不同】</p>
<p>get_meta_tags($url) &#x2F;&#x2F;获取该页面的所有META标签【返回关联数组】</p>
<p>JSON</p>
<p>json_encode($data); &#x2F;&#x2F;对变量进行JSON编码</p>
<p>json_decode($data) &#x2F;&#x2F;对JSON格式的字符串进行解码</p>
<p>json_last_error(); &#x2F;&#x2F;返回最后一次反生的错误</p>
<p>其他函数</p>
<p>sleep(10) &#x2F;&#x2F;脚本执行到这里后，延迟10秒继续执行</p>
<p>serialize() &#x2F;&#x2F;返回字符串，此字符串包含了表示 value 的字节流，可以存</p>
<p>储于任何地方。</p>
<p>unserialize() &#x2F;&#x2F;对单一的已序列化的变量进行操作，将其转换回 PHP 的</p>
<p>值。</p>
<p>当序列化对象时，PHP 将试图在序列动作之前调用该对象的成员函</p>
<p>数 __sleep()。这样就允许对象在被序列化之前做任何清除操作。类似的,</p>
<p>当使用 unserialize() 恢复对象时， 将调用 __wakeup() 成员函数。</p>
<p>类型转换</p>
<p>setType($a);	&#x2F;&#x2F;获取变量的类型</p>
<p>$b&#x3D;(int)$a;	&#x2F;&#x2F;把$a转换为整形</p>
<p>is_int($b); &#x2F;&#x2F;判断$b是否为整形，返回bool值</p>
<p>类型转换：</p>
<p>(int),(bool),(float),(string),(array),(object); intval(),floatval();strval()</p>
<p>判断类型：</p>
<p>is_bool&#x2F;int&#x2F;float&#x2F;string&#x2F;array&#x2F;object&#x2F;resource&#x2F;null</p>
<p>is_numberic();’&#x2F;&#x2F;判断是否为任何类型的数字或者数组字符串</p>
<p>is_callable();&#x2F;&#x2F;判断是否为有效函数名称</p>

    </div>

    
    
    

      <footer class="post-footer">
          <div class="post-tags">
              <a href="/tags/PHP%E5%9F%BA%E7%A1%80%E7%9F%A5%E8%AF%86/" rel="tag"># PHP基础知识</a>
          </div>

        


        
    <div class="post-nav">
      <div class="post-nav-item">
    <a href="/posts/40647.html" rel="prev" title="PHP7.4 属性的类型提示">
      <i class="fa fa-chevron-left"></i> PHP7.4 属性的类型提示
    </a></div>
      <div class="post-nav-item">
    <a href="/posts/11629.html" rel="next" title="学习Yii">
      学习Yii <i class="fa fa-chevron-right"></i>
    </a></div>
    </div>
      </footer>
    
  </article>
  
  
  



          </div>
          
    <div class="comments" id="valine-comments"></div>

<script>
  window.addEventListener('tabs:register', () => {
    let { activeClass } = CONFIG.comments;
    if (CONFIG.comments.storage) {
      activeClass = localStorage.getItem('comments_active') || activeClass;
    }
    if (activeClass) {
      let activeTab = document.querySelector(`a[href="#comment-${activeClass}"]`);
      if (activeTab) {
        activeTab.click();
      }
    }
  });
  if (CONFIG.comments.storage) {
    window.addEventListener('tabs:click', event => {
      if (!event.target.matches('.tabs-comment .tab-content .tab-pane')) return;
      let commentClass = event.target.classList[1];
      localStorage.setItem('comments_active', commentClass);
    });
  }
</script>

        </div>
          
  
  <div class="toggle sidebar-toggle">
    <span class="toggle-line toggle-line-first"></span>
    <span class="toggle-line toggle-line-middle"></span>
    <span class="toggle-line toggle-line-last"></span>
  </div>

  <aside class="sidebar">
    <div class="sidebar-inner">

      <ul class="sidebar-nav motion-element">
        <li class="sidebar-nav-toc">
          文章目录
        </li>
        <li class="sidebar-nav-overview">
          站点概览
        </li>
      </ul>

      <!--noindex-->
      <div class="post-toc-wrap sidebar-panel">
      </div>
      <!--/noindex-->

      <div class="site-overview-wrap sidebar-panel">
        <div class="site-author motion-element" itemprop="author" itemscope itemtype="http://schema.org/Person">
  <p class="site-author-name" itemprop="name">陈孟辉</p>
  <div class="site-description" itemprop="description">日积月藏，不做咸鱼。这里是陈孟辉的个人学习笔记，现就职于北京瑞友科技，负责维护企业ERP系统。</div>
</div>
<div class="site-state-wrap motion-element">
  <nav class="site-state">
      <div class="site-state-item site-state-posts">
          <a href="/archives/">
        
          <span class="site-state-item-count">170</span>
          <span class="site-state-item-name">日志</span>
        </a>
      </div>
      <div class="site-state-item site-state-categories">
            <a href="/categories/">
          
        <span class="site-state-item-count">45</span>
        <span class="site-state-item-name">分类</span></a>
      </div>
      <div class="site-state-item site-state-tags">
            <a href="/tags/">
          
        <span class="site-state-item-count">60</span>
        <span class="site-state-item-name">标签</span></a>
      </div>
  </nav>
</div>


  <div class="links-of-blogroll motion-element">
    <div class="links-of-blogroll-title"><i class="fa fa-link fa-fw"></i>
      Links
    </div>
    <ul class="links-of-blogroll-list">
        <li class="links-of-blogroll-item">
          <a href="http://tool.oschina.net/uploads/apidocs/jquery/regexp.html" title="http:&#x2F;&#x2F;tool.oschina.net&#x2F;uploads&#x2F;apidocs&#x2F;jquery&#x2F;regexp.html" rel="noopener" target="_blank">正则表达式</a>
        </li>
        <li class="links-of-blogroll-item">
          <a href="https://www.cs.usfca.edu/~galles/visualization/Algorithms.html" title="https:&#x2F;&#x2F;www.cs.usfca.edu&#x2F;~galles&#x2F;visualization&#x2F;Algorithms.html" rel="noopener" target="_blank">算法图示</a>
        </li>
    </ul>
  </div>

      </div>
        <div class="back-to-top motion-element">
          <i class="fa fa-arrow-up"></i>
          <span>0%</span>
        </div>

    </div>
  </aside>
  <div id="sidebar-dimmer"></div>


      </div>
    </main>

    <footer class="footer">
      <div class="footer-inner">
        

        

<div class="copyright">
  
  &copy; 
  <span itemprop="copyrightYear">2024</span>
  <span class="with-love">
    <i class="fa fa-heart"></i>
  </span>
  <span class="author" itemprop="copyrightHolder">陈孟辉</span>
    <span class="post-meta-divider">|</span>
    <span class="post-meta-item-icon">
      <i class="fa fa-chart-area"></i>
    </span>
    <span title="站点总字数">204k</span>
    <span class="post-meta-divider">|</span>
    <span class="post-meta-item-icon">
      <i class="fa fa-coffee"></i>
    </span>
    <span title="站点阅读时长">3:06</span>
</div>
  <div class="powered-by">由 <a href="https://hexo.io/" class="theme-link" rel="noopener" target="_blank">Hexo</a> & <a href="https://theme-next.org/" class="theme-link" rel="noopener" target="_blank">NexT.Gemini</a> 强力驱动
  </div>

        








      </div>
    </footer>
  </div>

  
  <script src="/lib/anime.min.js"></script>

<script src="/js/utils.js"></script>


<script src="/js/schemes/pisces.js"></script>


<script src="/js/next-boot.js"></script>




  




  
<script src="/js/local-search.js"></script>













  

  


<script>
NexT.utils.loadComments(document.querySelector('#valine-comments'), () => {
  NexT.utils.getScript('//unpkg.com/valine/dist/Valine.min.js', () => {
    var GUEST = ['nick', 'mail', 'link'];
    var guest = 'nick,mail,link';
    guest = guest.split(',').filter(item => {
      return GUEST.includes(item);
    });
    new Valine({
      el         : '#valine-comments',
      verify     : true,
      notify     : true,
      appId      : '9jQqXQuURk2dvsv5oVh9D0VM-gzGzoHsz',
      appKey     : 'YfjrSNHQAtj63yeNmdmrLlLw',
      placeholder: "Just go go",
      avatar     : 'mm',
      meta       : guest,
      pageSize   : '10' || 10,
      visitor    : false,
      lang       : '' || 'zh-cn',
      path       : location.pathname,
      recordIP   : true,
      serverURLs : ''
    });
  }, window.Valine);
});
</script>

</body>
</html>
